import os

# 函数方法
# open(): 打开文件，返回文件对象，默认模式为只读
# read(): 可以一次性读取文件的全部内容
# write(): 将指定的内容写入文件，指定的文本将插入的位置取决于文件模式和流的位置
# close(): 关闭文件


# file对象的属性
# file.name: 文件路径
# file.mode: 文件打开的模式
# file.closed: 文件是否已关闭

# r或者默认：读取模式，文件不存在则报错
f = open(r'test\pkg02.py')
print(f, f.name, f.mode)

print(f.read())
f.close()
print(f.closed)

# w：写入模式，文件不存在则创建，存在则覆盖
new_file = open(r'test\new_file.txt', 'w')
res = new_file.write('hello world')
# 返回写入的字符数
print(res)
new_file.close()

# a：追加模式,在文件末尾追加内容
append_file = open(r'test\new_file.txt', 'a')
res = append_file.write('\nhello world')
print(res)
append_file.close()

# tell(): 返回当前位置
f = open(r'test\new_file.txt', 'w+')
f.write('hello world')
pos = f.tell()
print(pos)

# seek(要移动的字节数): 设置当前位置
f.seek(5)
pos2 = f.tell()
print(pos2)
f.close()

# with表达式其实就是try-finally的语法糖，with 语句会自动关闭文件
with open(r'test\new_file.txt', 'w', encoding='utf-8') as f:
    print(f.write('这是美好的一天，我在学着Python'))
print(f.closed)

# read(num): num为读取的字节数，不传入的话默认为-1，表示全部读取
with open(r'test\pkg02.py', 'r', encoding='utf-8') as f:
    # print(f.read())
    # print(f.read(-1))
    print(f.read(8))

# readlines(): 读取所有行，返回一个列表，列表的元素为每行字符串
with open(r'test\pkg02.py', 'r', encoding='utf-8') as f:
    print(f.readlines())

# readline(): 读取一行，返回字符串
with open(r'test\pkg02.py', 'r', encoding='utf-8') as f:
    print(f.readline())
    print(f.readline())

# 文件重命名：os.rename(old_name, new_name)
os.rename(r'test\new_file.txt', r'test\new_file2.txt')
# 删除文件：os.remove(file_name)
os.remove(r'test\new_file2.txt')
# 创建文件夹：os.mkdir(dir_name)
os.mkdir(r'test\new_dir')
# 删除文件夹：os.rmdir(dir_name)
os.rmdir(r'test\new_dir')
# 返回当前工作目录
print(os.getcwd())
# 返回path下所有文件和文件夹的列表
print(os.listdir())
print(os.listdir('../'))
